package com.jinmdz.fmis.api.rec.model.recinfo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jinmdz.fmis.api.api.model.common.IdVersionData;
import com.jinmdz.fmis.api.rec.model.recdispatchcar.RecDispatchCarData;
import com.jinmdz.fmis.common.annotation.AnValidate;
import com.jinmdz.fmis.common.constant.EValidateCode;
import com.jinmdz.fmis.core.base.BaseBean;
import com.jinmdz.fmis.dao.model.recactualitem.RecActualItem;
import com.jinmdz.fmis.dao.model.recselitem.RecSelItem;
import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;

/**
 * 接运响应数据
 *
 * @author GaoXiangLiang
 * @date 2020-06-15 9:10
 */
public class RecInfoData extends BaseBean {
    /**
     * 主键
     */
    @AnValidate(name = "主键", code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "主键", name = "id", position = 1)
    private Integer id;

    /**
     * 接运编码
     */
    @AnValidate(name = "接运编码")
    @ApiModelProperty(value = "接运编码", name = "recCode", position = 2)
    private String recCode;

    /**
     * 联系人
     */
    @AnValidate(name = "联系人", required = true)
    @ApiModelProperty(value = "联系人", name = "contact", position = 3)
    private String contact;

    /**
     * 联系电话
     */
    @AnValidate(name = "联系电话")
    @ApiModelProperty(value = "联系电话", name = "contactPhone", position = 4)
    private String contactPhone;
    /**
     * 联系人类型
     */
    @AnValidate(name = "联系人类型", required = true, code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "联系人类型", name = "contactType", position = 5)
    private Integer contactType;
    /**
     * 逝者姓名
     */
    @AnValidate(name = "逝者姓名")
    @ApiModelProperty(value = "逝者姓名", name = "deadName", position = 6)
    private String deadName;
    /**
     * 死亡原因
     */
    @AnValidate(name = "死亡原因")
    @ApiModelProperty(value = "死亡原因", name = "deathCause", position = 7)
    private String deathCause;
    /**
     * 联系人与逝者关系
     */
    @AnValidate(name = "联系人与逝者关系", code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "联系人与逝者关系", name = "relationCode", position = 8)
    private Integer relationCode;
    /**
     * 联系人与逝者关系名称
     */
    @AnValidate(name = "联系人与逝者关系名称")
    @ApiModelProperty(value = "联系人与逝者关系名称", name = "relation", position = 9)
    private String relation;
    /**
     * 预约车型编码,字典编码[rec_info_type]
     */
    @AnValidate(name = "预约车型编码,字典编码", required = true, code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "预约车型编码,字典编码", name = "carTypeCode", position = 10)
    private Integer carTypeCode;
    /**
     * 预约车型,字典编码
     */
    @AnValidate(name = "预约车型,字典编码")
    @ApiModelProperty(value = "预约车型,字典编码", name = "carType", position = 11)
    private String carType;

    /**
     * 车辆用途编码，字典编码[rec_info_use]
     */
    @AnValidate(name = "车辆用途编码，字典编码", required = true, code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "车辆用途编码，字典编码", name = "purposeCode", position = 12)
    private Integer purposeCode;
    /**
     * 车辆用途，字典编码[rec_car_use],接运遗体、送灰等
     */
    @AnValidate(name = "车辆用途，字典编码")
    @ApiModelProperty(value = "车辆用途，字典编码", name = "purpose", position = 13)
    private String purpose;
    /**
     * 预约日期
     */
    @AnValidate(name = "预约日期", required = true)
    @ApiModelProperty(value = "预约日期", name = "arrivalTime", example = "2020-02-07 23:01", position = 14)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date arrivalTime;
    /**
     * 接运费
     */
    @AnValidate(name = "接运费", required = true, code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "接运费", name = "recCharge", position = 15)
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private BigDecimal recCharge;
    /**
     * 遗体到馆存放编码
     */
    @AnValidate(name = "遗体到馆存放编码", required = true, code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "遗体到馆存放编码", name = "bodyDepositCode", position = 16)
    private Integer bodyDepositCode;
    /**
     * 遗体到馆存放
     */
    @AnValidate(name = "遗体到馆存放")
    @ApiModelProperty(value = "遗体到馆存放", name = "bodyDeposit", position = 17)
    private String bodyDeposit;
    /**
     * 接运地址
     */
    @AnValidate(name = "接运地址")
    @ApiModelProperty(value = "接运地址", name = "address", position = 18)
    private String address;
    /**
     * 来源编码
     */
    @AnValidate(name = "来源编码", required = true, code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "来源编码", name = "sourceCode", position = 19)
    private Integer sourceCode;
    /**
     * 来源
     */
    @AnValidate(name = "来源")
    @ApiModelProperty(value = "来源", name = "source", position = 20)
    private String source;
    /**
     * 接运状态编码，字典编码[rec_task_state]
     */
    @AnValidate(name = "接运状态编码，字典编码[rec_task_state]", required = true, code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "接运状态编码，字典编码[rec_task_state]", name = "taskStateCode", position = 20)
    private Integer taskStateCode;
    /**
     * 来源
     */
    @AnValidate(name = "接运状态")
    @ApiModelProperty(value = "接运状态", name = "taskState", position = 21)
    private String taskState;
    /**
     * 费用说明
     */
    @AnValidate(name = "费用说明")
    @ApiModelProperty(value = "费用说明", name = "chargeRemark", position = 22)
    private String chargeRemark;
    /**
     * 备注
     */
    @AnValidate(name = "备注")
    @ApiModelProperty(value = "备注", name = "remark", position = 23)
    private String remark;

    /**
     * 微信appId
     */
    @AnValidate(name = "微信appId")
    @ApiModelProperty(value = "微信appid", name = "appId", position = 24)
    private String appId;

    /**
     * 数据版本号
     */
    @AnValidate(name = "数据版本号")
    @ApiModelProperty(value = "数据版本号", name = "version", position = 25)
    private Long version;
    /**
     * 接运司机ID多个
     */
    @AnValidate(name = "接运司机")
    @ApiModelProperty(value = "接运司机", name = "recInfoDriver", position = 26)
    private ArrayList<Integer> recInfoDriver;
    /**
     * 抬尸工ID多个
     */
    @AnValidate(name = "抬尸工")
    @ApiModelProperty(value = "抬尸工", name = "recInfoPorter", position = 27)
    private ArrayList<Integer> recInfoPorter;
    /**
     * 车辆调度信息
     */
    @AnValidate(name = "车辆调度信息")
    @ApiModelProperty(value = "车辆调度信息", name = "dispatchCar", position = 28)
    private RecDispatchCarData dispatchCar;
    /**
     * 删除随车明细
     */
    @AnValidate(name = "删除随车明细")
    @ApiModelProperty(value = "删除随车明细", name = "relSelDelete", position = 29)
    private ArrayList<IdVersionData> relSelDelete;
    /**
     * 删除实际明细
     */
    @AnValidate(name = "删除随车明细")
    @ApiModelProperty(value = "删除随车明细", name = "relActualDelete", position = 30)
    private ArrayList<IdVersionData> relActualDelete;
    /**
     * 随车服务物品
     */
    @AnValidate(name = "随车服务物品")
    @ApiModelProperty(value = "随车服务物品", name = "recSelItem", position = 31)
    private ArrayList<RecSelItem> recSelItem;
    /**
     * 实际使用物品
     */
    @AnValidate(name = "实际使用物品")
    @ApiModelProperty(value = "实际使用物品", name = "recActualItem", position = 32)
    private ArrayList<RecActualItem> recActualItem;

    public Integer getId() {
        return id;
    }

    public RecInfoData setId(Integer id) {
        this.id = id;
        return this;
    }

    public String getRecCode() {
        return recCode;
    }

    public RecInfoData setRecCode(String recCode) {
        this.recCode = recCode;
        return this;
    }

    public String getContact() {
        return contact;
    }

    public RecInfoData setContact(String contact) {
        this.contact = contact;
        return this;
    }

    public String getContactPhone() {
        return contactPhone;
    }

    public RecInfoData setContactPhone(String contactPhone) {
        this.contactPhone = contactPhone;
        return this;
    }

    public Integer getContactType() {
        return contactType;
    }

    public RecInfoData setContactType(Integer contactType) {
        this.contactType = contactType;
        return this;
    }

    public String getDeadName() {
        return deadName;
    }

    public RecInfoData setDeadName(String deadName) {
        this.deadName = deadName;
        return this;
    }

    public String getDeathCause() {
        return deathCause;
    }

    public RecInfoData setDeathCause(String deathCause) {
        this.deathCause = deathCause;
        return this;
    }

    public Integer getRelationCode() {
        return relationCode;
    }

    public RecInfoData setRelationCode(Integer relationCode) {
        this.relationCode = relationCode;
        return this;
    }

    public String getRelation() {
        return relation;
    }

    public RecInfoData setRelation(String relation) {
        this.relation = relation;
        return this;
    }

    public Integer getCarTypeCode() {
        return carTypeCode;
    }

    public RecInfoData setCarTypeCode(Integer carTypeCode) {
        this.carTypeCode = carTypeCode;
        return this;
    }

    public String getCarType() {
        return carType;
    }

    public RecInfoData setCarType(String carType) {
        this.carType = carType;
        return this;
    }

    public Integer getPurposeCode() {
        return purposeCode;
    }

    public RecInfoData setPurposeCode(Integer purposeCode) {
        this.purposeCode = purposeCode;
        return this;
    }

    public String getPurpose() {
        return purpose;
    }

    public RecInfoData setPurpose(String purpose) {
        this.purpose = purpose;
        return this;
    }

    public Date getArrivalTime() {
        return arrivalTime;
    }

    public RecInfoData setArrivalTime(Date arrivalTime) {
        this.arrivalTime = arrivalTime;
        return this;
    }

    public BigDecimal getRecCharge() {
        return recCharge;
    }

    public RecInfoData setRecCharge(BigDecimal recCharge) {
        this.recCharge = recCharge;
        return this;
    }

    public Integer getBodyDepositCode() {
        return bodyDepositCode;
    }

    public RecInfoData setBodyDepositCode(Integer bodyDepositCode) {
        this.bodyDepositCode = bodyDepositCode;
        return this;
    }

    public String getBodyDeposit() {
        return bodyDeposit;
    }

    public RecInfoData setBodyDeposit(String bodyDeposit) {
        this.bodyDeposit = bodyDeposit;
        return this;
    }

    public String getAddress() {
        return address;
    }

    public RecInfoData setAddress(String address) {
        this.address = address;
        return this;
    }

    public Integer getSourceCode() {
        return sourceCode;
    }

    public RecInfoData setSourceCode(Integer sourceCode) {
        this.sourceCode = sourceCode;
        return this;
    }

    public String getSource() {
        return source;
    }

    public RecInfoData setSource(String source) {
        this.source = source;
        return this;
    }

    public Integer getTaskStateCode() {
        return taskStateCode;
    }

    public RecInfoData setTaskStateCode(Integer taskStateCode) {
        this.taskStateCode = taskStateCode;
        return this;
    }

    public String getTaskState() {
        return taskState;
    }

    public RecInfoData setTaskState(String taskState) {
        this.taskState = taskState;
        return this;
    }

    public String getChargeRemark() {
        return chargeRemark;
    }

    public RecInfoData setChargeRemark(String chargeRemark) {
        this.chargeRemark = chargeRemark;
        return this;
    }

    public String getRemark() {
        return remark;
    }

    public RecInfoData setRemark(String remark) {
        this.remark = remark;
        return this;
    }

    public String getAppId() {
        return appId;
    }

    public RecInfoData setAppId(String appId) {
        this.appId = appId;
        return this;
    }

    public Long getVersion() {
        return version;
    }

    public RecInfoData setVersion(Long version) {
        this.version = version;
        return this;
    }

    public RecDispatchCarData getDispatchCar() {
        return dispatchCar;
    }

    public RecInfoData setDispatchCar(RecDispatchCarData dispatchCar) {
        this.dispatchCar = dispatchCar;
        return this;
    }

    public RecInfoData setRecInfoDriver(ArrayList<Integer> recInfoDriver) {
        this.recInfoDriver = recInfoDriver;
        return this;
    }

    public RecInfoData setRecInfoPorter(ArrayList<Integer> recInfoPorter) {
        this.recInfoPorter = recInfoPorter;
        return this;
    }

    public ArrayList<Integer> getRecInfoDriver() {
        return recInfoDriver;
    }

    public ArrayList<Integer> getRecInfoPorter() {
        return recInfoPorter;
    }

    public ArrayList<IdVersionData> getRelSelDelete() {
        return relSelDelete;
    }

    public RecInfoData setRelSelDelete(ArrayList<IdVersionData> relSelDelete) {
        this.relSelDelete = relSelDelete;
        return this;
    }

    public ArrayList<IdVersionData> getRelActualDelete() {
        return relActualDelete;
    }

    public RecInfoData setRelActualDelete(ArrayList<IdVersionData> relActualDelete) {
        this.relActualDelete = relActualDelete;
        return this;
    }

    public ArrayList<RecSelItem> getRecSelItem() {
        return recSelItem;
    }

    public RecInfoData setRecSelItem(ArrayList<RecSelItem> recSelItem) {
        this.recSelItem = recSelItem;
        return this;
    }

    public ArrayList<RecActualItem> getRecActualItem() {
        return recActualItem;
    }

    public RecInfoData setRecActualItem(ArrayList<RecActualItem> recActualItem) {
        this.recActualItem = recActualItem;
        return this;
    }
}
